computer system — Home

Computer System

Parent Note (Up)
Next Note

The major decisions to make here are with respect to the operating system and the laptop device itself. The significantly larger and more important choice is that of the operating system, since that impacts the actual working of your code.

What is an Operating System?

This link , or really any google search will tell you that the operating system is essentially the software that gets your computer started and continually handles operations of the hardware and all software applications. It's important to choose your OS, since it will dictate among other things:
- What kind of applications you can run
- How applications are installed, run and interact with each other
- How applications will use the hardware

Which Operating System?

Top down, my answer to which OS a developer should use is Linux or MacOS. Using Windows isn't therefore a problem, but there are some disadvantages to using it. The reasons I believe Linux or MacOS is overall better to start and run with are:
- Terminal - Linux and Unix terminals are more powerful and easier to run operations on
- Installations and updates - Installing through terminal, updating libraries of borrowed software are all easier on Linux and Unix terminals.

I therefore prefer using MacOS because it combines power and ease of Unix/Linux with the personal usage benefits of an Apple/Windows laptop.
You can get into a few more details of which OS is better on which count through the following articles:
- best os for programming in 2021
- best os for programming
- best os for a developer

Which Device?

My short answer to this is that it doesn't really matter. Of course there are some factors which influence how good or otherwise a device will be for coding. But it is unlikely that in the 21st century you will end up with a device which is a real bottleneck for development. There are a bunch of links which can help you obsess over the specifications of the device further. In my crisp opinion, some things to loom out for are:
- Laptop over desktop, just as a matter of convenience.
- Personal comfort - This might mean a larger screen, lighter weight, smoother keyboard, longer battery life. Whichever factors matter to you the most should be prioritized, because these are often tradeoffs, especially when the price factor gets added on.
- Processing power, number of cores and RAM - This is where I think one can really begin to draw the line and simplify for two reasons:
  - They're all pretty good - More is of course better, and you can go for the highest end specs. But if you absolutely need these specs, then you're either working on something much higher end than this document will help you with, or (far more likely) you will benefit much more from improving the efficiency of your code than you will by upgrading your processor.
  - You don't need it - Sooner or later you will start writing code which is going to run on a far away server with more processing power than your computer. At this point you'll get used to the idea of your computer being a bottleneck, and you'll run less code locally.
- You might not get to choose - If you've zeroed in on MacOS as your OS of choice then you don't have too much of a choice amongst devices.
But here are a few links that help you pick out the right device:
- factors to consider while comparing
- sample laptop comparison

Going forward, I'm going to focus only on the laptop that I actually have and use which is:
- MacBook Pro (13-inch, M1, 2020)
- 13.3 inch
- Apple M1
- 8GB Ram
- 256 GB SSD

Cleaning up the System

You might sometimes find that your system is slow, packed with a lot of garbage, or in some way just needs to be brought back into shape. This is of course going to be less expensive than purchasing a new system. I am therefore going to explore how I can really refresh my entire laptop setup by:
- Backing up the important files
- Resetting my laptop

Backing up the Important Files

In my case I have set aside this laptop purely for this full stack development project. As you get more heavily into any given project, or just coding as a gig, you may also want to separate your coding and your personal laptop. This ensures that your personal life doesn't literally slow down and eat up limited resources, while also ensuring that something that crashes/ required resets etc, don't impact your personal files.
It took me quite a while to develop a little bit of discipline on the front of storing and backing up all of my important documents on some cloud storage. So there's still a good volume of my files which are a mess and eat up more space than they should. I have therefore found it useful to create a few extra google accounts to store files temporarily. The hope is that I will sort through all of them, figure out what I need and then better organise them on just the one google drive or some other cloud service.
Once you have found a system that works for you and you have backed up all of the personal files and coding files that you need to their respective locations, you're ready for the purge.

Factory Reset

A simple google search will provide a bunch of useful resources on how to factory reset your laptop. The advantage of factory resetting is that there is no more thorough a purge. If you have backed up all of your important files, this is a useful and cathartic step. Some links that help you factory reset a macbook air (haven't tried this for my macbook pro yet, but should be similar):
- how to factory reset a mac
- how to reset a macbook air

Literal cleaning

Post that you may want literally clean your laptop. Especially if yours is as old mine is.
- clean a laptop screen with household products

End of Note

Notes mentioning this note